#ifndef CUSH_TYPES_H
#define CUSH_TYPES_H

/**
 *
 * Type declarations and definitions
 *
 */

typedef enum types {
	INT		= 1,
	FLOAT	= 2,
	DOUBLE	= 3,
    CUFFT_COMPLEX = 4
} cush_t;

typedef enum dist_types {
    UNIF    = 1
} cush_dist_t;

typedef struct {
	size_t ndevices;
	cush_t type;
	size_t type_size;

    int* id;            // device IDs
	size_t* size;       // size in bytes of the buffer
    size_t* offset;     // for direct indexing into host buf
	//CUdeviceptr* ptr;
	void*** ptr;        // device pointers for cuda
    cudaStream_t* stream; // streams for Async memory
} cush_dbuff_t;

#endif

/* vim: set sw=4 sts=4 et foldmethod=syntax syntax=c : */
